public final class IsaacCipher {
	private int anInt522;
	private int[] anIntArray523;
	private int[] anIntArray524 = new int[256];
	private int anInt525;
	private int anInt526;
	private int anInt527;

	public IsaacCipher(int[] is) {
		anIntArray523 = new int[256];
		for (int i_0_ = 0; i_0_ < is.length; i_0_++) {
			anIntArray523[i_0_] = is[i_0_];
		}
		method298();
	}

	public final int getNextKey() {
		if (anInt522-- == 0) {
			method297();
			anInt522 = 255;
		}
		return anIntArray523[anInt522];
	}

	private final void method297() {
		anInt526 += ++anInt527;
		for (int i = 0; i < 256; i++) {
			int i_1_ = anIntArray524[i];
			if ((i & 0x3) == 0) {
				anInt525 ^= anInt525 << 13;
			} else if ((i & 0x3) == 1) {
				anInt525 ^= anInt525 >>> 6;
			} else if ((i & 0x3) == 2) {
				anInt525 ^= anInt525 << 2;
			} else if ((i & 0x3) == 3) {
				anInt525 ^= anInt525 >>> 16;
			}
			anInt525 += anIntArray524[i + 128 & 0xff];
			int i_2_;
			anIntArray524[i] = i_2_ = anIntArray524[(i_1_ & 0x3fc) >> 2] + anInt525 + anInt526;
			anIntArray523[i] = anInt526 = anIntArray524[(i_2_ >> 8 & 0x3fc) >> 2] + i_1_;
		}
	}

	private final void method298() {
		int i_3_;
		int i_4_;
		int i_5_;
		int i_6_;
		int i_7_;
		int i_8_;
		int i_9_;
		int i = i_3_ = i_4_ = i_5_ = i_6_ = i_7_ = i_8_ = i_9_ = -1640531527;
		for (int i_10_ = 0; i_10_ < 4; i_10_++) {
			i ^= i_3_ << 11;
			i_5_ += i;
			i_3_ += i_4_;
			i_3_ ^= i_4_ >>> 2;
			i_6_ += i_3_;
			i_4_ += i_5_;
			i_4_ ^= i_5_ << 8;
			i_7_ += i_4_;
			i_5_ += i_6_;
			i_5_ ^= i_6_ >>> 16;
			i_8_ += i_5_;
			i_6_ += i_7_;
			i_6_ ^= i_7_ << 10;
			i_9_ += i_6_;
			i_7_ += i_8_;
			i_7_ ^= i_8_ >>> 4;
			i += i_7_;
			i_8_ += i_9_;
			i_8_ ^= i_9_ << 8;
			i_3_ += i_8_;
			i_9_ += i;
			i_9_ ^= i >>> 9;
			i_4_ += i_9_;
			i += i_3_;
		}
		for (int i_11_ = 0; i_11_ < 256; i_11_ += 8) {
			i += anIntArray523[i_11_];
			i_3_ += anIntArray523[i_11_ + 1];
			i_4_ += anIntArray523[i_11_ + 2];
			i_5_ += anIntArray523[i_11_ + 3];
			i_6_ += anIntArray523[i_11_ + 4];
			i_7_ += anIntArray523[i_11_ + 5];
			i_8_ += anIntArray523[i_11_ + 6];
			i_9_ += anIntArray523[i_11_ + 7];
			i ^= i_3_ << 11;
			i_5_ += i;
			i_3_ += i_4_;
			i_3_ ^= i_4_ >>> 2;
			i_6_ += i_3_;
			i_4_ += i_5_;
			i_4_ ^= i_5_ << 8;
			i_7_ += i_4_;
			i_5_ += i_6_;
			i_5_ ^= i_6_ >>> 16;
			i_8_ += i_5_;
			i_6_ += i_7_;
			i_6_ ^= i_7_ << 10;
			i_9_ += i_6_;
			i_7_ += i_8_;
			i_7_ ^= i_8_ >>> 4;
			i += i_7_;
			i_8_ += i_9_;
			i_8_ ^= i_9_ << 8;
			i_3_ += i_8_;
			i_9_ += i;
			i_9_ ^= i >>> 9;
			i_4_ += i_9_;
			i += i_3_;
			anIntArray524[i_11_] = i;
			anIntArray524[i_11_ + 1] = i_3_;
			anIntArray524[i_11_ + 2] = i_4_;
			anIntArray524[i_11_ + 3] = i_5_;
			anIntArray524[i_11_ + 4] = i_6_;
			anIntArray524[i_11_ + 5] = i_7_;
			anIntArray524[i_11_ + 6] = i_8_;
			anIntArray524[i_11_ + 7] = i_9_;
		}
		for (int i_12_ = 0; i_12_ < 256; i_12_ += 8) {
			i += anIntArray524[i_12_];
			i_3_ += anIntArray524[i_12_ + 1];
			i_4_ += anIntArray524[i_12_ + 2];
			i_5_ += anIntArray524[i_12_ + 3];
			i_6_ += anIntArray524[i_12_ + 4];
			i_7_ += anIntArray524[i_12_ + 5];
			i_8_ += anIntArray524[i_12_ + 6];
			i_9_ += anIntArray524[i_12_ + 7];
			i ^= i_3_ << 11;
			i_5_ += i;
			i_3_ += i_4_;
			i_3_ ^= i_4_ >>> 2;
			i_6_ += i_3_;
			i_4_ += i_5_;
			i_4_ ^= i_5_ << 8;
			i_7_ += i_4_;
			i_5_ += i_6_;
			i_5_ ^= i_6_ >>> 16;
			i_8_ += i_5_;
			i_6_ += i_7_;
			i_6_ ^= i_7_ << 10;
			i_9_ += i_6_;
			i_7_ += i_8_;
			i_7_ ^= i_8_ >>> 4;
			i += i_7_;
			i_8_ += i_9_;
			i_8_ ^= i_9_ << 8;
			i_3_ += i_8_;
			i_9_ += i;
			i_9_ ^= i >>> 9;
			i_4_ += i_9_;
			i += i_3_;
			anIntArray524[i_12_] = i;
			anIntArray524[i_12_ + 1] = i_3_;
			anIntArray524[i_12_ + 2] = i_4_;
			anIntArray524[i_12_ + 3] = i_5_;
			anIntArray524[i_12_ + 4] = i_6_;
			anIntArray524[i_12_ + 5] = i_7_;
			anIntArray524[i_12_ + 6] = i_8_;
			anIntArray524[i_12_ + 7] = i_9_;
		}
		method297();
		anInt522 = 256;
	}
}
